package 线程同步.方式二_同步方法;


public class Test {
    // 同步方法
    // 作用: 把访问共享资源的核心方法上锁, 以此保证线程安全
//    修饰符 synchronized 返回值类型 方法名称(形参列表) {
//        操作共享资源的代码
//    }
    // 原理: 每次只能一个线程进入, 执行完毕以后自动解锁, 其他线程才可以进来执行

    // 同步方法底层原理
    // 1. 同步方法其实底层也是有隐式锁对象的, 只是锁的范围是整个方法代码
    // 2. 如果方法是实例方法: 同步方法默认用this作为的锁对象
    // 3. 如果方法是静态方法: 同步方法默认用 类名.class 作为的锁对象

    public static void main(String[] args) {
        // 1:
        Account acc = new Account("123",100000);

        // 2:
        new Draw(acc,"小明").start(); // 小明
        new Draw(acc,"小红").start(); // 小红
    }
}
